package com.xbongbong.paas.service;

import com.xbongbong.paas.domain.entity.PaasAppEntity;
import com.xbongbong.paas.domain.entity.PaasMenuEntity;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.pro.menu.pojo.dto.MenuNewListDTO;
import com.xbongbong.pro.smartsettings.pojo.dto.SmartSettingsBusinessListDTO;
import com.xbongbong.pro.smartsettings.pojo.dto.SmartSettingsConditionValueDTO;
import com.xbongbong.pro.smartsettings.pojo.dto.SmartSettingsDelDTO;
import com.xbongbong.pro.smartsettings.pojo.dto.SmartSettingsEnableDTO;
import com.xbongbong.pro.smartsettings.pojo.dto.SmartSettingsGetDTO;
import com.xbongbong.pro.smartsettings.pojo.dto.SmartSettingsListDTO;
import com.xbongbong.pro.smartsettings.pojo.dto.SmartSettingsSaveDTO;
import com.xbongbong.pro.smartsettings.pojo.vo.SmartSettingsBusinessListVO;
import com.xbongbong.pro.smartsettings.pojo.vo.SmartSettingsConditionValueVO;
import com.xbongbong.pro.smartsettings.pojo.vo.SmartSettingsDelVO;
import com.xbongbong.pro.smartsettings.pojo.vo.SmartSettingsEnableVO;
import com.xbongbong.pro.smartsettings.pojo.vo.SmartSettingsGetVO;
import com.xbongbong.pro.smartsettings.pojo.vo.SmartSettingsListVO;
import com.xbongbong.pro.smartsettings.pojo.vo.SmartSettingsMenuListVO;
import com.xbongbong.pro.smartsettings.pojo.vo.SmartSettingsSaveVO;

/**
 * @description: 智能助手
 * @Author: hongxiao
 * @date: 2019-04-23 20:19
 * @since v1.0
 */
public interface SmartSettingsService {
    /**
     * 获取业务列表
     *
     * @param businessListDTO 入参
     * @return
     * @throws
     * @author hongxiao
     * @date: 2019-04-23 21:22
     * @since v1.0
     * @version v1.0
     */
    SmartSettingsBusinessListVO businessList(SmartSettingsBusinessListDTO businessListDTO) throws XbbException;
    /**
     * 获取业务下智能助手列表
     *
     * @param listDTO 入参
     * @return
     * @throws
     * @author hongxiao
     * @date: 2019-04-23 21:22
     * @since v1.0
     * @version v1.0
     */
    SmartSettingsListVO list(SmartSettingsListDTO listDTO) throws XbbException;
    /**
     * 获取设置
     *
     * @param getDTO 入参
     * @return
     * @throws
     * @author hongxiao
     * @date: 2019-04-23 21:22
     * @since v1.0
     * @version v1.0
     */
    SmartSettingsGetVO get(SmartSettingsGetDTO getDTO) throws XbbException;
    /**
     * 获取触发器可用值
     *
     * @param conditionValueDTO 入参
     * @return
     * @throws
     * @author hongxiao
     * @date: 2019-04-23 21:22
     * @since v1.0
     * @version v1.0
     */
    SmartSettingsConditionValueVO getConditionValue(SmartSettingsConditionValueDTO conditionValueDTO) throws XbbException;
    /**
     * 保存设置
     *
     * @param saveDTO 入参
     * @return
     * @throws
     * @author hongxiao
     * @date: 2019-04-23 21:23
     * @since v1.0
     * @version v1.0
     */
    SmartSettingsSaveVO save(SmartSettingsSaveDTO saveDTO) throws XbbException;
    /**
     * 启用/关闭智能助手
     *
     * @param enableDTO 入参
     * @return
     * @throws
     * @author hongxiao
     * @date: 2019-04-23 21:23
     * @since v1.0
     * @version v1.0
     */
    SmartSettingsEnableVO enable(SmartSettingsEnableDTO enableDTO) throws XbbException;
    /**
     * 智能助手-获取菜单列表
     *
     * @param menuListDTO 入参
     * @return
     * @throws
     * @author hongxiao
     * @date: 2019-04-27 20:20
     * @since v1.0
     * @version v1.0
     */
    SmartSettingsMenuListVO menuList(MenuNewListDTO menuListDTO) throws XbbException;
    /**
     * 删除智能助手
     *
     * @param smartSettingsDelDTO 入参
     * @throws
     * @return
     * @author hongxiao
     * @date 2019-11-14 19:26
     * @since
     * @version
     */
    SmartSettingsDelVO delete(SmartSettingsDelDTO smartSettingsDelDTO) throws XbbException;

    /**
     * 关闭应用/菜单时，同时关闭对应的智能助手
     *
     * @param
     * @throws
     * @return
     * @author hongxiao
     * @date 2019-12-23 20:46
     * @since
     * @version
     */
    void batchDisable(String corpid, String loginUserId, String loginUserName, String httpHeader, PaasAppEntity appEntity, PaasMenuEntity menuEntity) throws XbbException;
}
